perm filename CRE[CRE,BGB]4 blob
sn#039854 filedate 1973-05-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00025 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00007 00002 CRE3 - CART'S EYE - CONTOUR,REGION,EDGE - BGB - APRIL 1973.
C00009 00003 INITIALIZATION - SA: AND REE:
C00011 00004 SUBR(TTY) TTY LISTEN.
C00012 00005 --- COMMAND JUMP TABLE ASCII 00 TO 37.
C00013 00006 --- COMMAND JUMP TABLE ASCII 40 TO 77.
C00014 00007 --- COMMAND JUMP TABLE ASCII 100 TO 137.
C00016 00008 XWINDO: WINDOW SCROLLING COMMANDS.
C00017 00009 XLINK: LINK FOLLOWING COMMANDS.
C00019 00010 XRESET "Z" COMMAND. NEXIMG.
C00022 00011 SUBR(XNAME) "N" - NAME THE FILM.
C00023 00012 XFLAGS:
C00024 00013 XINPUT: "I" - INPUT COMMANDS.
C00025 00014 XTABLE:
C00026 00015 SUBR(XCUT). MAKE CUTS COMMAND "C".
C00028 00016 SUBR(XCUTS). MAKE CUTS COMMAND "Q".
C00029 00017 SUBR(XTAKE). "T" TAKE TELEVISION PICTURE.
C00030 00018 SUBR(XSELECT). "S" SELECT CAMERA.
C00032 00019 SUBR(XXPAND) HISTOGRAM CUT HIGH AND CUT LOW.
C00034 00020 SUBR(REMAP) RE MAP TVBUF.
C00035 00021 AWIDTH - SELECT ARC WIDTH.
C00038 00022 XCART. CART CONTROL COMMANDS.
C00040 00023 CART SPACE WAR JOB.
C00042 00024 XHELP:
C00045 00025
C00046 ENDMK
C⊗;
;CRE3 - CART'S EYE - CONTOUR,REGION,EDGE - BGB - APRIL 1973.
TITLE CRE
EXTERN QBLK,SX,SY,DEL,MAG
EXTERN DPYBLK,DPYIMG,DPYHIS,CROP
EXTERN MKCON
EXTERN TVXGP,PLOTO,MORCOR
EXTERN QIMAGE,QNODE
INTERN FLGBGB,FLGDD,FLGIII
INTERN CTRL,META,CHR,VCUT
INTERN ARCWID
;CONTROL FLAGS.
INTERN FLGHIS
FLGHIS:0 ;HISTOGRAM IS VALID.
VCUT:-14 ;VECTOR DISPLAY CONTRAST THRESHOLD.
FLGBGB:0 ;RUNNING UNDER A BGB PPPN.
FLGDD:0 ;RUNNING AT A DATA DISC.
FLGIII:0 ;RUNNING AT A III DISPLAY.
;ARC WIDTH PROPORTIONAL TO CONTRAST TABLE FOR MKARCS.
ARCWID:
FOR I←0,3{2.0↔}
FOR I←4,5{1.5↔}
FOR I←6,12{1.25↔}
FOR I←13,17{1.0↔}
FOR I←20,37{1.0↔}
FOR I←40,77{0.7↔}
0
;TELETYPE COMMAND STATE.
DECLARE{CTRL,META,CHR}
;INITIALIZATION - SA: AND REE:
;----------------------------------------------------------------
PDL: BLOCK 100
;START ADDRESS
SA: LAC 17,[IOWD 100,PDL]
CALL(MORCOR)
CALL(SEGTV)
;RE-ENTRY ADDRESS.
REE: LACI .↔DAC 124
SETO↔GETLIN ;GET LINE CHARACTERISTICS.
CAMN[-1]↔SETZ ;JOB DETACHED.
DZM FLGIII↔TLNE(1B0)↔SETOM FLGIII
DZM FLGDD↔ TLNE(1B4)↔SETOM FLGDD
PPIOT 2,-=250
PPIOT 3,3003
DZM QBLK
MOVEI 20↔CRLF↔SOJG .-1
SETZ↔GETPPN↔CDR
CAIN'BGB'↔SETOM FLGBGB
LAC 17,[IOWD 100,PDL]
CALL(CROP)
CALL(DPYIMG)
PUSHJ TTY
EXIT
;6/12/72----------------------------------------------------------
;TELETYPE COMMAND STATE.
;SEGTV - GET OLD TVSEG.
SUBR(SEGTV)-------------------------------------------------------
EXTERN HI
;MAKE A NEW TVSEG.
LACI HI
CORE2↔GO[FATAL(AIN'T NO CORE UP YONDER.)]
LAC[SIXBIT/*CRE3*/]↔SETNM2↔JFCL
SETZ↔SEGNUM↔DAC TVSEG
LAC[%+1(%)]↔DZM %↔BLT HI-1
POP0J
TVSEG:0
;16/12/72---------------------------------------------------------
SUBR(TTY) ;TTY LISTEN.
BEGIN TTY;--------------------------------------------------------
L0: CRLF
L1: OUTCHR["*"]
L2: INCHRW
DZM CTRL↔TRZE 200↔SETOM CTRL
DZM META↔TRZE 400↔SETOM META
CAIN 0,15↔GO L1+1 ;CARRIAGE RETURN.
CAIN 0,12↔GO L1 ;LINE FEED.
CAIL 140↔SUBI 40 ;SUPPRESS LOWER CASE.
DAC CHR
LAC 1,CHR
PUSHJ P,@A00(1)
GO L0 ;CRLF-STAR.
GO L2 ;NOTHING.
GO L1 ;STAR.
BEND TTY; BGB 19 APRIL 1973 --------------------------------------
; --- COMMAND JUMP TABLE ASCII 00 TO 37.
A00: NOP ;null
NOP ;"↓"
NOP ;"α"
NOP ;"β"
XLINK ;"∧"
NOP ;"¬"
NOP ;"ε"
NOP ;"π"
NOP ;"λ"
NOP ;tab
NOP ;lf
NOP ;vt
NOP ;ff
NOP ;cr
NOP ;"∞"
NOP ;"∂"
XLINK ;"⊂"
XLINK ;"⊃"
XLINK ;"∩"
XLINK ;"∪"
NOP ;"∀"
NOP ;"∃"
XLINK ;"⊗"
XMOVIE ;"↔" RUN THRU THE IMAGES AS A MOVIE.
NOP ;"_"
XTDPY ;"→"
NOP ;"~"
NOP ;"≠"
XLINK ;"≤"
XLINK ;"≥"
NOP ;"≡"
XLINK ;"∨"
; --- COMMAND JUMP TABLE ASCII 40 TO 77.
A40: XWINDO ;" "
XLINK ;"!"
NOP ;"""
XCRLFS ;"#"
NOP ;"$"
NOP ;"%"
NOP ;"&"
NOP ;"'"
XWINDO ;"("
XWINDO ;")"
XWINDO ;"*"
XLINK ;"+"
XLINK ;","
XWINDO ;"-"
XLINK ;"."
XWINDO ;"/"
NOP ;"0"
NOP ;"1"
NOP ;"2"
NOP ;"3"
NOP ;"4"
NOP ;"5"
NOP ;"6"
NOP ;"7"
NOP ;"8"
NOP ;"9"
XWINDO ;":"
XWINDO ;";"
XLINK ;"<"
NOP ;"="
XLINK ;">"
XHELP ;"?"
; --- COMMAND JUMP TABLE ASCII 100 TO 137.
A100: NOP ;"@"
NOP ;"A" AUTOMATIC TURNTABLE PERCEPTION.
XCART; *;"B" DRIVE BACKWARDS.
XCUT ;"C" MAKE THRESHOLD CUT.
XFLAGS ;"D" DISABLE PROCESSES.
XFLAGS ;"E" ENABLE PROCESSES.
XCART; *;"F" DRIVE FORWARDS.
NOP ;"G"
DPYHIS ;"H" HISTOGRAM, "αH" ,"βH" BI-MODAL CUT.
XINPUT ;"I" INPUT.
XXPAND ;"J" TWO CUTS AT 5% FROM ENDS.
NOP ;"K"
XCART; *;"L" TURN LEFT. "αL" PAN CAMERA LEFT.
XMATCH ;"M" MATCH AND LINK IMAGES IN TIME.
XNAME ;"N" NAME THE FILM.
XOUTPUT ;"O" OUTPUT.
PLOTO ;"P" PLOT OUTPUT FILE.
XCUTS ;"Q" EQUI-SPACED CUTS.
XCART; *;"R" TURN RIGHT. "αR" PAN CAMERA RIGHT.
XSELECT ;"S" SELECT CAMERA, "αS" BCLIP, "βS" TCLIP.
XTAKE ;"T" TAKE TELEVISON PICTURE. "αT" SIXBIT.
NOP ;"U"
XCART ;"V" XCART DIAGONOSTIC COMMAND MODE.
AWIDTH ;"W" SET ARC WIDTH TABLE.
TVXGP ;"X" XEROX OUTPUT.
XTABLE ;"Y" TURN TABLE.
XRESET ;"Z" ZERO DATA BUFFERS.
NOP ;"[" OR "{"
XWINDO ;"\" OR "|"
NOP ;"]" OR ALT
NOP ;"↑" OR "}"
XTDPY ;"←" OR RUB
NOP: OUTCHR[9]↔OUTCHR CHR↔OUTSTR[ASCIZ/ NO OPERATION./]
POP0J
XWINDO: ;WINDOW SCROLLING COMMANDS.
BEGIN XWINDO;-----------------------------------------------------
LAC CHR
CAIN 0," "↔GO L2
CAIN 0,":"↔GO[LAC SX↔FAD DEL↔DAC SX↔GO L2]
CAIN 0,";"↔GO[LAC SX↔FSB DEL↔DAC SX↔GO L2]
CAIN 0,")"↔GO[LAC SY↔FAD DEL↔DAC SY↔GO L2]
CAIN 0,"("↔GO[LAC SY↔FSB DEL↔DAC SY↔GO L2]
CAIN 0,"/"↔GO[LAC DEL↔FSC -1↔DAC DEL↔GO L2]
CAIN 0,"\"↔GO[LAC DEL↔FSC 1↔DAC DEL↔GO L2]
CAIN 0,"*"↔GO[LAC MAG↔FMP[1.5]↔DAC MAG↔GO L2]
CAIN 0,"-"↔GO[LAC MAG↔FDV[1.5]↔DAC MAG↔GO L2]
L2: CALL(CROP)↔CALL(DPYIMG)↔AOS(P)↔POP0J
BEND XWINDO; BGB 19 APRIL 1973 -----------------------------------
XLINK: ;LINK FOLLOWING COMMANDS.
COMMENT/ Replace the QBLK with one of its own links. Empty links
and demands for positions that are not links are ignored by means
of checking the node's relocation bits./
BEGIN XLINK;------------------------------------------------------
LAC CHR
CAIN"!"↔GO[DZM QBLK↔GO L]
CAIE"⊗"↔CAIN"+"↔GO[LAC FILM↔DAC QBLK↔GO L]
SKIPN 2,QBLK↔POP0J ;GET THE QBLK NODE.
RELOC 3,2 ;RELOCATION BITS.
CAIN","↔LACI 2000 ;WORD0.
CAIN"."↔LACI 1000
CAIN"<"↔LACI 2001 ;WORD1.
CAIN">"↔LACI 1001
CAIN"∪"↔LACI 2003 ;WORD3.
CAIN"∩"↔LACI 1003
CAIN"≤"↔LACI 2004 ;WORD4.
CAIN"≥"↔LACI 1004
CAIN"⊂"↔LACI 2005 ;WORD5.
CAIN"⊃"↔LACI 1005
CAIN"∨"↔LACI 2006 ;WORD6.
CAIN"∧"↔LACI 1006
TRNN 3000↔POP0J ;NO HIT ON COMMAND CHR.
DAC 1↔ANDI 1,7↔LSH -9
LDB 3,[POINT 3,3,20↔POINT 3,3,23↔0↔POINT 3,3,26
POINT 3,3,29↔POINT 3,3,32↔POINT 3,3,35](1)
TDNN 3,0↔POP0J ;AIN'T NO LINK THERE.
ADD 1,2↔LAC 3,(1)
TRNN 0,1↔MOVSS 3↔CDR 3
SKIPE↔DAC QBLK
L: LAC 1,QBLK↔TEST 1,IBIT↔GO .+3
DAC 1,QIMAGE↔CALL(DPYIMG)
CALL(DPYBLK)
AOS(P)↔POP0J
BEND XLINK; BGB 19 APRIL 1973 ------------------------------------
XCRLFS: LACI 20↔CRLF↔SOJG .-1↔POP0J
;XRESET "Z" COMMAND. NEXIMG.
SUBR(XRESET)------------------------------------------------------
BEGIN XRESET
EXTERN AVAIL,BLKCNT,FILM,OLD44
SKIPE META↔GO[SETZB 0,1↔UPGIOT 16,↔POP0J]
SKIPE CTRL↔GO L
DZM QBLK↔DZM QIMAGE
LAC OLD44↔CORE↔JFCL↔DZM OLD44
DZM AVAIL↔DZM BLKCNT↔DZM FILM
CALL(MORCOR)
L: DZM SX↔DZM SY
LAC[32.0]↔DAC DEL
LAC[3.4]↔DAC MAG
CALL(CROP)
CALL(DPYIMG)
POP0J
BEND XRESET; BGB 31 DECEMBER 1972 --------------------------------
SUBR(XMOVIE)------------------------------------------------------
BEGIN XMOVIE;NEXT IMAGE - BGB - 11 DEC 72.
SKIPN 1,QIMAGE↔POP0J
CCW 2,1↔SKIPE CTRL↔CW 2,1
DAC 2,QIMAGE
CALL(DPYIMG)
SKIPE META↔GO[INCHRS↔GO XMOVIE↔POP0J]
POP0J
BEND;12/11/72-----------------------------------------------------
SUBR(XMATCH) "M" - MATCH AND LINK IMAGES IN TIME.
BEGIN XMATCH;-----------------------------------------------------
EXTERN CMCNII
LAC 2,FILM↔SON 2,2 ;FIRST IMAGE TAKEN.
CW 2,2 ; LAST IMAGE TAKEN.
LAC 1,2↔CW 1,1 ;PENULT IMAGE TAKEN.
CALL(CMCNII,1,2)
POP0J
BEND XMATCH; BGB 16 APRIL 1973 -----------------------------------
XTDPY:; "←" "→" DISPLAY TIMED LINKED POLYGON OF QBLK.
EXTERN TIMDPY
SKIPN 1,QBLK↔POP0J
TEST 1,PBIT↔POP0J
PUSH P,QBLK
LAC CHR↔CAIN "←"↔GO[PUSHJ P,TIMDPY+1↔POP0J]
PUSHJ P,TIMDPY↔POP0J
SUBR(XNAME) "N" - NAME THE FILM.
BEGIN XNAME;------------------------------------------------------
EXTERN STADPY,FNAME,FNAME6
OUTSTR[ASCIZ/ FILM = /]
LAC 1,[POINT 7,FNAME,-1] ;ASCII.
LAC 2,[POINT 6,FNAME6,-1] ;SIXBIT.
LACI 3,6
L: INCHWL
CAIN 15↔GO[INCHWL↔GO EOL]
CAIL"a"↔SUBI 40
IDPB 1
SUBI 40
IDPB 2
SOJG 3,L
EOL: SETZ↔SKIPE 3↔GO[IDPB 1↔IDPB 2↔SOJA 3,.-1]
CALL(STADPY)
AOS(P)↔AOS(P)↔POP0J
BEND XNAME; BGB 17 APRIL 1973 ------------------------------------
XFLAGS:
BEGIN XFLAGS;-----------------------------------------------------
EXTERN ENEST,ECONT,ESMOO,ECOMP
LAC CHR↔CAIN"E"↔GO L9
SETZM ENEST↔SETZM ECONT↔SETZM ESMOO↔SETZM ECOMP↔POP0J
L9: SETOM ENEST↔SETOM ECONT↔SETOM ESMOO↔SETOM ECOMP↔POP0J
BEND XFLAGS; BGB 20 APRIL 1973 ----------------------------------
XINPUT:; "I" - INPUT COMMANDS.
EXTERN CREIN,TVDSKI
SKIPN CTRL↔GO[DZM FLGHIS
CALL(TVDSKI,[-1])↔GO SKPOPJ]
CALL(CREIN)
LAC 1,FILM↔SON 1,1↔DAC 1,QIMAGE
CALL(DPYIMG)
SKPOPJ: AOS(P)↔AOS(P)↔POP0J
XOUTPUT:; "O" - OUTPUT COMMANDS.
EXTERN CREOUT,TVDSKO
SKIPN CTRL↔GO[
CALL(TVDSKO)↔GO SKPOPJ]
CALL(CREOUT)↔GO SKPOPJ
XTABLE:
BEGIN XTABLE
LACI =12↔DAC TICKS# ;1 SECOND.
LAC META↔DAC FLG# ;DIRECTION OF ROTATION.
LACI 1↔SKIPE CTRL↔AOS↔DAC SPEED#
SPCWAR 5,SW.JOB
SKIPL TICKS↔GO .-1
SPCWAR'SSW'
POP0J
SW.JOB: SOSG TICKS↔SETZM SPEED
MOVE 1,SPEED↔ANDI 1,3
SKIPE FLG↔GO GO.CW
GO.CCW: CONSO 40↔DATAO 500,[177(5)↔020(5)↔040(5)↔060(5)](1)↔DISMIS
GO.CW: CONSO 40↔DATAO 500,[177(5)↔140(5)↔120(5)↔120(5)](1)↔DISMIS
STOP: CONSO 40↔DATAO 500,[177(5)]↔DISMIS
BEND XTABLE
SUBR(XCUT). ;MAKE CUTS COMMAND "C".
BEGIN XCUT;-------------------------------------------------------
;MAKE CUT COMMAND BEGINS HERE.
DZM FFLAG#↔LAC 1,QBLK
CAMN 1,FILM↔SETOM FFLAG#
DZM FRAME#
DZM QQ2↔DZM QQ3
L1: SETZ 1,↔INCHWL
CAIN 15↔GO[CALL(L4)↔GO L2]
CAIL 0,"0"↔CAILE 0,"7"↔GO[CALL(L4)↔GO L1]
IMULI 1,=8↔ANDI 17↔ADD 1,0↔GO L1+1
L2: INCHWL
SKIPN FFLAG↔GO L3↔AOS FRAME
CALL(TVDSKI,FRAME)↔SKIPN 1↔POP0J
L3: SKIPE META↔GO L5
CALL(MKCON,QQ2,QQ3)
CALL(DPYIMG)
SKIPN FFLAG
POP0J
GO L2+1
DECLARE{QQ2,QQ3}
L4: SKIPN 1↔POP0J
CAIL 1,=64↔POP0J
MOVNS 1↔SETZ 3,
SLACI 2,1B18↔LSHC 2,(1)
IORM 2,QQ2↔IORM 3,QQ3
POP0J
L5: SKIPN CTRL↔GO L3+2
CALL(VICXGP,QQ2,QQ3)↔EXTERN VICXGP
POP0J
BEND;1/17/73------------------------------------------------------
SUBR(XCUTS). ;MAKE CUTS COMMAND "Q".
BEGIN XCUTS;------------------------------------------------------
SETZ 1,
SKIPE CTRL↔LACI 1,1
SKIPE META↔ADDI 1,2
CALL(MKCON,{Q1(1)},{Q2(1)})
CALL(DPYIMG)
POP0J
;THREE, SEVEN, EIGHT OR FIFTEEN CUTS - EQUALLY SPACED.
Q1: 1B16 +1B32
1B8+1B16+1B24+1B32 ↔ 1B4+1B12+1B20+1B28
1B8+1B16+1B24+1B32 + 1B4+1B12+1B20+1B28
Q2: 1B12
1B4+1B12+1B20 ↔ 1B0+1B8+1B16+1B24
1B4+1B12+1B20 + 1B0+1B8+1B16+1B24
BEND XCUTS; BGB 9 DECEMBER 1972 -----------------------------------
SUBR(XTAKE). "T" TAKE TELEVISION PICTURE.
BEGIN XTAKE
EXTERN TVIN6,TVIN4
SETOM FLGHIS ;HISTOGRAM WILL BE ACCUMULATED.
SLACI %+17↔LAPI .+3
SPCWGO↔SKIPA↔DISMIS ;LOCKIN CORE.
SKIPE CTRL↔GO[
CALL(TVIN6)↔GO .+2]
CALL(TVIN4)
SPCWAR'SSW'↔POP0J ;UNLOCK CORE.
BEND XTAKE;(BGB)14-DEC-72
;_________________________________________________________________
SUBR(XSELECT). "S" SELECT CAMERA.
BEGIN XSELECT;----------------------------------------------------
EXTERN TVCLIP
LAC CTRL↔AND META↔SKIPE↔GO L4
SKIPE CTRL↔GO L2↔SKIPE META↔GO L3
;SELECT CAMERA.
L1: LDB[POINT 2,TVCLIP,26]↔IORI 60
OUTSTR[ASCIZ/ CHANGE CAMERA /]
OUTCHR↔OUTSTR[ASCIZ/ TO /]
INCHRW↔CAIE 15↔DPB[POINT 2,TVCLIP,26]↔POP0J
;SELECT BOTTOM CLIP LEVEL.
L2: LDB[POINT 3,TVCLIP,20]↔IORI 60
OUTSTR[ASCIZ/ CHANGE BCLIP /]
OUTCHR↔OUTSTR[ASCIZ/ TO /]
INCHRW↔CAIE 15↔DPB[POINT 3,TVCLIP,20]↔POP0J
;SELECT TOP CLIP LEVEL.
L3: LDB[POINT 3,TVCLIP,23]↔IORI 60
OUTSTR[ASCIZ/ CHANGE TCLIP /]
OUTCHR↔OUTSTR[ASCIZ/ TO /]
INCHRW↔CAIE 15↔DPB[POINT 3,TVCLIP,23]↔POP0J
;SHRINK NODE SPACE.
L4: CALL(SHRINK)↔EXTERN SHRINK
POP0J
BEND XSELECT; BGB 6 DECEMBER 1972 --------------------------------
SUBR(XXPAND); HISTOGRAM CUT HIGH AND CUT LOW.
BEGIN XXPAND;-----------------------------------------------------
EXTERN HISTO,HISTOG
ACCUMULATORS{Q1,Q2,HI,LO}
SKIPN CTRL↔GO L1
LACI 1,77↔SETZ↔DAC 0,TVMAP(1)↔AOS↔SOJGE 1,.-2↔GO L3
L1: CALL(HISTOG)
LACI HI,77↔DZM LO↔SETZB Q1,Q2
LACI 6↔IMULI =62208↔IDIVI =100↔DAC 1 ;6% RULE.
;COME IN FROM THE EXTREMES 6 PER CENT.
SETZ↔ADD HISTO(LO)↔CAMGE 1↔AOJA LO,.-2
SETZ↔ADD HISTO(HI)↔CAMGE 1↔SOJA HI,.-2
L2: CAML LO,HI↔POP0J
;LOOK FOR LOCAL MINIMUM.
; LAC HISTO(LO)↔CAML HISTO+1(LO)↔AOJA LO,L2
; LAC HISTO(LO)↔CAML HISTO-1(LO)↔AOJA LO,L2
; LAC HISTO(HI)↔CAML HISTO+1(HI)↔SOJA HI,L2
; LAC HISTO(HI)↔CAML HISTO-1(HI)↔SOJA HI,L2
;MAKE THE TV MAP.
SETZB 0,1
DAC 0,TVMAP(1)↔CAMG 1,LO↔AOJA 1,.-2 ;00 TO LO → 00.
LACI 77↔LACI 1,77
DAC 0,TVMAP(1)↔CAML 1,HI↔SOJA 1,.-2 ;77 TO HI → 77.
SLACI 2,77↔LAC 1,HI↔SUB 1,LO↔IDIV 2,1 ;DELTA INTENSITY.
SETZ↔LAC 1,LO↔AOS 1
HLRZM 0,TVMAP(1)↔ADD 0,2
CAMGE 1,HI↔AOJA 1,.-3
L3: CALL(REMAP)
POP0J
BEND XXPAND;------------------------------------------------------
SUBR(REMAP); RE MAP TVBUF.
BEGIN REMAP;------------------------------------------------------
EXTERN TVBUF,FLGHIS
DZM FLGHIS
LAC[XWD L,2]↔BLT 8↔GO 2
L: ILDB 1,7 ;2
LAC 1,TVMAP(1) ;3 REPLACE BYTE ACCORDING TO TABLE TVMAP.
DPB 1,7
SOJG 8,2 ;5
POP0J ;6
POINT 6,TVBUF ;7 INITIAL TV BUFFER POINTER.
=62208 ;8 NUMBER OF PIXELS.
BEND REMAP; BGB 6 MAY 1973 ----------------------------------------
INTERN TVMAP
TVMAP: BLOCK 100
;AWIDTH - SELECT ARC WIDTH.
SUBR(AWIDTH)------------------------------------------------------
BEGIN AWIDTH
EXTERN REALIN
ACCUMULATORS{DEL,XLO,XHI,X1,X2}
TDCA X2,X2↔INCHWL
L1: OUTSTR[ASCIZ/ #/]
INCHRW↔CAIN 15↔GO L1-1
CAIL"0"↔CAILE"7"↔GO L4
ANDI 7↔LSH 3↔DAC 1
INCHRW↔CAIN 15↔GO L1-1
CAIL"0"↔CAILE"7"↔GO L4
ANDI 7↔ADD 1,0↔EXCH 1,X2↔DAC 1,X1
L2: CALL(TYPOUT)
CALL(REALIN)
JUMPLE .+3↔CAMGE[100.0]↔CALL(ALTER)
CAIE 1,12↔GO .+3↔OUTCHR[15]↔AOJA X2,L3
CAIN 1,15↔INCHWL
CAIE 1,175↔GO L1↔CRLF↔SOJA X2,L3
L3: CAILE X2,77↔LACI X2,77
CAIGE X2,00↔LACI X2,00
LAC[ASCIZ/ #00/]
DPB X2,[POINT 3,0,27]↔ROT X2,-3
DPB X2,[POINT 3,0,20]↔ROT X2, 3
OUTSTR↔GO L2
L4: CRLF↔POP0J
TYPOUT: LAC ARCWID(X2)↔FMPR[100.0]↔FIXX
IDIVI 0,=1000
SKIPE↔IORI"0"↔IORI" " ↔DPB 0,[POINT 7,STR,13]
IDIVI 1,=100 ↔IORI 1,"0"↔DPB 1,[POINT 7,STR,20]
IDIVI 2,=10 ↔IORI 2,"0"↔DPB 2,[POINT 7,STR,34]
IORI 3,"0"↔DPB 3,[POINT 7,STR+1,6]
OUTSTR STR↔POP0J
STR: ASCIZ/ 99.99 /
ALTER: DAC ARCWID(X2)
LAC XLO,X1↔LAC XHI,X2↔CAMLE XLO,XHI↔EXCH XLO,XHI
LAC XHI↔SUB XLO↔FLOAT
LAC DEL,ARCWID(XHI)↔FSBR DEL,ARCWID(XLO)↔FDVR DEL,0
LAC ARCWID(XLO)↔AOS XLO
L5: CAML XLO,XHI↔POP0J
FADR DEL↔DAC ARCWID(XLO)↔AOJA XLO,L5
BEND AWIDTH;BGB 16 DECEMBER 1972 ---------------------------------
;XCART. CART CONTROL COMMANDS.
SUBR(XCART)-------------------------------------------------------
BEGIN XCART
OPDEF RADIO[7702B11]
LAC 2,CHR ;INITIAL COMMAND CHARACTER.
CAIN 2,"V"↔GO L0
SKIPE CTRL↔TRO 2,200↔SKIPA ;SHIT.
M0: INCHRW 2 ;WAIT FOR COMMAND CHARACTER.
DZM CNT0↔DZM CNT1 ;ZIP TIME OF ANY PREVIOUS COMMAND.
DZM CTRL↔TRZE 2,200↔SETOM CTRL
DAC 2,CHR
SLACI 0,=5 ;ONE-THIRD OF A SECOND.
;DRIVE ONE MINUTE FORWARDS OR BACKWARDS.
CAIN 2,"F"↔GO[LAC 1,[(=900)12]↔GO M1]
CAIN 2,"B"↔GO[LAC 1,[(=900)12]↔LAPI 0,2↔GO M1]
SKIPE CTRL↔GO .+5
;STEERING 5 SECONDS LEFT OR RIGHT.
CAIN 2,"L"↔GO[LAC 1,[(=75)11]↔LAPI 1↔GO M1]
CAIN 2,"R"↔GO[LAC 1,[(=75)11]↔LAPI 0↔GO M1]
;CAMERA PAN 10 SECONDS LEFT OR RIGHT.
CAIN 2,"L"↔GO[LAC 1,[(=150)14]↔GO M1]
CAIN 2,"R"↔GO[LAC 1,[(=150)14]↔LAPI 0,4↔GO M1]
CAIN 2,"0"↔GO M0 ;HALT WITH SPACEWAR RUNNING.
CAIN 2," "↔GO M0 ;HALT WITH SPACEWAR RUNNING.
EX: DZM FIREUP#↔SPCWAR'SSW'↔CRLF↔POP0J
M1: HLRZM 0,CNT0 ↔ DAPZ 0,WORD0
HLRZM 1,CNT1 ↔ DAPZ 1,WORD1
;FIREUP SPACE WAR MODULE - FOUR TICK SERVICE.
SKIPE FIREUP↔GO M0↔SETOM FIREUP
SPCWAR 4,SWJOB↔GO M0
;CART SPACE WAR JOB.
;FIRE UP SPACE WAR JOB.
L0: DZM CNT0↔DZM CNT1
SPCWAR 4,SWJOB
OUTCHR["*"]↔LACI 7↔DAC WORD2
;OLDE DIAGONOSTIC TTY LISTEN LOOP.
L1: INCHRW↔CAIN "X"↔GO EX
CAIGE"0"↔GO L2
CAILE"8"↔GO L2
ANDI 7↔DAC WORD2↔GO L1
L2: CAIGE"A"↔GO L3
CAILE"H"↔ANDI 7
IORI 10↔DAC WORD2↔GO L1
L3: CAIN 15↔OUTCHR["*"]↔GO L1
; SPACE WAR OUTPUT TO RADIO TRANSMITTER.
SWJOB: CONSZ 40↔DISMIS ;MAKE SURE WE ARE ON THE PDP-6.
SKIPE 1,WORD3↔GO[
DATAO 500,WORD3↔CALLI 400024] ;ROTATE TURN TABLE.
SOSLE CNT0↔GO[LAC WORD0↔GO L5]↔DZM CNT0
SOSLE CNT1↔GO[LAC WORD1↔GO L5]↔DZM CNT1
LAC WORD2
L5: TRNE 8↔RADIO 400054; 1 SELECT ACTION RELAYS.
TRNN 8↔RADIO 620054; 0 SELECT DIRECTION RELAYS.
TRNE 1↔RADIO 440053; 1 STEERING MOTOR.
TRNN 1↔RADIO 620053; 0 ;
TRNE 2↔RADIO 410052; 1 DRIVE MOTOR.
TRNN 2↔RADIO 600052; 0 ;
TRNE 4↔RADIO 360051; 1 CAMERA PAN MOTOR.
TRNN 4↔RADIO 570051; 0;
RADIO 340050
RADIO 340055
DISMIS ;EXIT SPACEWAR JOB.
DECLARE{WORD0,WORD1,WORD2,WORD3,CNT0,CNT1}
BEND XCART; BGB 18 DECEMBER 1972 ---------------------------------
XHELP:
CALL(TVHELP,[[SIXBIT/CAREYEHLP/↔0↔SIXBIT/DOCBGB/]])
POP0J
SUBR(TVHELP)FILLOC
BEGIN TVHELP
EXTERNAL DPYSET,DPYOUT,DPYBIG,DPYBRT,AIVECT,RIVECT,DTYO,DPYBUF
SETZM INHDR
INIT 17,↔SIXBIT/DSK/↔INHDR
GO [FATAL(CAN'T INIT DSK)]
MOVEI 1,2↔HRL 1,ARG1↔BLT 1,5
LOOKUP 17,2
GO [ OUTSTR[ASCIZ/HELP FILE NOT FOUND.
/]↔ POP1J ]
PUSH P,121
PUSH P,44
MOVE 1,44
MOVEM 1,121
LOOP: USETI 17,1
SETSTS 17,0
LACI 0,2
MOVEM 0,PAGNUM#
SOJLE 0,FOUND
PGLOOP: CALL(GETCHR)
GO [ OUTSTR[ASCIZ/PAGE NOT FOUND.
/]↔ GO RET]
CAIE 1,14
JRST PGLOOP
JRST PGLOOP-1
FOUND: CALL(DPYSET,DPYBUF)
CALL(AIVECT,[0],[=440])
CALL(DPYBIG,[1])
CALL(DPYBRT,[1])
SETZM LPOS#
CHLOOP: CALL(GETCHR)↔GO FIN
CAIN 1,14↔GO FIN
CAIN 1,11↔GO [ CALL(DTYO,[40])
AOS 1,LPOS
TRNE 1,7
GO $.-4
GO CHLOOP ]
CALL(DTYO,1)
AOS LPOS
MOVE 1,1(P)
CAIE 1,15
GO CHLOOP
SETZM LPOS
CALL(RIVECT,[1000],[0])
GO CHLOOP
FIN: CALL(DPYOUT,[16])
OUTSTR[ASCIZ/ TYPE <META>Z TO MAKE HELP GO AWAY./]
RET: RELEASE 17,
POP P,121
MOVE 1,121
CORE 1,↔GO [ FATAL(CAN'T SHRINK CORE) ]
POP P,121
POP1J
GETCHR:
SOSG INHDR+2
IN 17,↔GO[ILDB 1,INHDR+1↔AOS(P)↔POP0J ]
POP0J
INHDR: BLOCK 3
BEND TVHELP
END SA